package com.hkyp.ss.course.apis.utils;


import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.List;

/**
 *
 * 工具类，用于将一个类的所有属性设置为null
 *
 * 测试可用
 *
 */
// 来源：https://segmentfault.com/a/1190000012707351
public class MyReflectionUtil {


    public static <T> T byField(T t) {
        MyReflectionUtil.getAllFields(t.getClass()).forEach(field -> {
            try {
                field.setAccessible(true);
                field.set(t, null);
            } catch (IllegalAccessException e) {
                throw new RuntimeException(e);
            }
        });
        return t;
    }

    public static List<Field> getAllFields(Class< ? > c ){

        return Arrays.asList(c.getDeclaredFields());
    }

}
